"""
测试配置文件
"""
import pytest
import os
import sys
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))

# 设置测试环境变量
os.environ["TESTING"] = "1"
os.environ["DATABASE_URL"] = "sqlite:///./test.db"

from app.core.database import engine, Base
from app.models import *  # 导入所有模型

@pytest.fixture(scope="session", autouse=True)
def setup_test_database():
    """设置测试数据库"""
    # 创建所有表
    Base.metadata.create_all(bind=engine)
    yield
    # 测试完成后清理
    Base.metadata.drop_all(bind=engine)

@pytest.fixture(scope="function")
def clean_database():
    """每个测试前清理数据库"""
    # 清理所有表的数据
    from app.core.database import SessionLocal
    db = SessionLocal()
    try:
        # 删除所有表的数据但保留表结构
        for table in reversed(Base.metadata.sorted_tables):
            db.execute(table.delete())
        db.commit()
    finally:
        db.close()
    yield